In computer programming, boilerplate code, or simply boilerplate, are sections of code that are repeated in multiple places with little to no variation. When using languages that are considered verbose, the programmer must write a lot of boilerplate code to accomplish only minor functionality.
The need for boilerplate can be reduced through high-level mechanisms such as metaprogramming (which has the computer automatically write the needed boilerplate code or insert it at compile time), convention over configuration (which provides good default values, reducing the need to specify program details in every project) and model-driven engineering (which uses models and model-to-code generators, eliminating the need for manual boilerplate code).
It is also possible to move boilerplate code to an abstract class so that it can be inherited by any number of . Another option would be to move it into a subroutine so that it can be called instead of being duplicated.
A related term is bookkeeping code, referring to code that is not part of the business logic but is interleaved with it in order to keep data structures updated or handle secondary aspects of the program.
use warnings;
use strict;
The first line is a shebang, which identifies the file as a Perl script that can be executed directly on the command line on Unix/Linux systems. The other two are pragmas turning on warnings and strict mode, which are mandated by fashionable Perl programming style.
This next example is a C/C++ programming language boilerplate, include guard.
...
This checks, and sets up, a global flag to tell the compiler whether the file myinterface.h has already been included. As many interdepending files may be involved in the compilation of a module, this avoids processing the same header multiple times, (which would lead to errors due to multiple definitions with the same name).
private String name; private Person owner;
public Pet(String name, Person owner) { this.name = name; this.owner = owner; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Person getOwner() { return owner; }
public void setOwner(Person owner) { this.owner = owner; }}
Most of the boilerplate in this example exists to fulfill requirements of JavaBeans. If the variable's name and owner were declared as public, the accessor and mutator methods would not be needed.
In Java 14, record classes were added to fight with this issue.
To reduce the amount of boilerplate, many frameworks have been developed, e.g. Lombok for Java. The same code as above is auto-generated by Lombok using , which is a form of metaprogramming:
private String name;
private Person owner;
}
public string Name { get; set; }
public Person Owner { get; set; }
}
Starting with C# 9.0 there is an opportunity to use Records which generate classes with Properties automatically:
Test
# Anything placed here will never be executed in a module context. pass
if __name__ != '__main__':
# Anything placed here will only be executed in a module context. pass
|
|